package cn.it.xiaohan.note.web;

import cn.it.xiaohan.note.po.Note;
import cn.it.xiaohan.note.po.User;
import cn.it.xiaohan.note.service.NoteService;
import cn.it.xiaohan.note.util.Page;
import cn.it.xiaohan.note.vo.NoteVo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/index")
public class IndexServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 是指主页导航栏高亮
        request.setAttribute("menu_page","index");

        // 得到用户行为 （判断是什么条件查询：标题查询，日期查询，类型查询）
        String actionName = request.getParameter("actionName");
        // 将用户行为存放到request作用域中
        request.setAttribute("action",actionName);

        // 判断用户行为
        if ("searchTitle".equals(actionName)){
            // 得到查询条件
            String title = request.getParameter("title");

            // 将查询条件设置到request请求域中(查询条件的回显)
            request.setAttribute("title",title);
            // 标题搜索
            noteList(request,response,title,null,null);
        }else if ("searchDate".equals(actionName)){
            // 得到日期查询条件
            String date = request.getParameter("date");
            // 将日期存放到请求域中
            request.setAttribute("date",date);
            // 日期搜索
            System.out.println("日期");
            noteList(request,response,null,date,null);

        }else if ("searchType".equals(actionName)){
            // 得到类型查询条件参数
            String typeId = request.getParameter("typeId");
            // 将类型存放到request请求域中
            request.setAttribute("typeId",typeId);
            // 类型查询
            System.out.println("类型");
            noteList(request,response,null,null,typeId);
        } else{
            // 不做条件查询
            // 分页查询云记列表
            System.out.println("列表");
            noteList(request,response,null,null,null);
        }

        // 动态加载主页的页面值
        request.setAttribute("changePage","note/list.jsp");
        // 请求转发到index.jsp
        request.getRequestDispatcher("index.jsp").forward(request,response);
    }

    private void noteList(HttpServletRequest request, HttpServletResponse response, String title, String date, String typeId) {
        // 获取参数
        String pageNum = request.getParameter("pageNum");
        String pageSize = request.getParameter("pageSize");
        User user = (User) request.getSession().getAttribute("user");

        // 调用Service方法返回Page对象
        Page<Note> page = new NoteService().findNoteListByPage(pageNum,pageSize,user.getUserId(),title,date,typeId);

        // 将查询到的page对象存放到request作用域中
        request.setAttribute("page",page);

        // 通过日期分组查询当前登录用户下的云记数量
        List<NoteVo> dateInfo = new NoteService().findNoteCountByDate(user.getUserId());

        //设置集合存放到Session作用域中
        request.getSession().setAttribute("dateInfo",dateInfo);

        // 通过类型分组查询当前登录用户下的云记数量
        List<NoteVo> typeInfo = new NoteService().findNoteCountByType(user.getUserId());

        //设置集合存放到Session作用域中
        request.getSession().setAttribute("typeInfo",typeInfo);
    }
}
